<?php
namespace api\xcx\controller;
use think\Cache;
use think\Loader;
use think\Db;
use think\Request;
use think\Controller;
use think\config;
use app\admin\model\Admin;
/**
 *  Staff.php 员工信息控制器
 *
 * @copyright			(C) 2014-2018 ShengTeng
 * @lastmodify			2018-05-21
 */
class Staff extends Base
{
      /**
     * @api {POST} Staff/login 员工用户密码登录
     * @apiVersion 1.0.0
     * @apiGroup 员工
     *
     * @apiParam {String} account 账户
     * @apiParam {String} pwd 密码
     *
     * @apiSuccess {Int} code 返回码
     * @apiSuccess {String} message  提示信息
     * @apiSuccess {Object} data  返回数据
     *
     * @apiSuccessExample {json} Success-Response:
     *     HTTP/1.1 200 OK
     *     {
     *          "code":0,
     *          "message":"",
     *          "data":{
     *          "userId" 员工id
     *          "token" 员工请求数据标识
     *          "userNumber" 员工工号
     *          "userName" 员工名称
     *          "userPhone" 员工手机号
     *          "userAmount" 员工资金
     *          "userPic" 头像,暂时没有
     *          "userSex" 性别性别 1：女 ，2：男
     *          "type" 员工类型，1，员工，2,店长
     *          "status" 状态是否禁用。1：正常。2：禁用
     *          }
     *      }
     */
    public function login(Request $request){
        $params=$request->param();
        // 检测参数是否存在
        if(!isset($params['account'])){
            return json(returnAjax('','缺少参数account','1'));
        }
        $account = $params['account'];
        if(!isset($params['pwd'])){
            return json(returnAjax('','缺少参数pwd','1'));
        }
        $pwd = $params['pwd'];
        $staff = Model('Staff');
        // 员工登录
        // 1.先查看员工是否存在
        // 2.用户名和密码是否正确
        $setPass = new Admin();
        $pwd = $setPass->setPasswordAttr($pwd);
        $is_staff = $staff->selStaff($account,$pwd);

        if(!$is_staff){
            return json(returnAjax('','员工不存在',10));
        }
        $is_login = $staff->accountLogin($account,$pwd);
        if($is_login){

            if($is_login['type'] == 2){//查看店
                $shop = Model('Shop');
                $shopInfo = $shop->selByStaff($is_login['userId']);
                $is_login['shop'] = $shopInfo;
            }
            return json(returnAjax($is_login));
        }else{
            return json(returnAjax('','用户名或密码错误',1));
        }
    }

    /**
     * @api {POST} Staff/work 员工上下班
     * @apiVersion 1.0.0
     * @apiGroup 员工
     *
     * @apiParam {String} token 员工token
     * @apiParam {Int} status    1上班,2下班
     * @apiParam {Int} shopId   店铺id
     *
     * @apiSuccess {Int} code 返回码
     * @apiSuccess {String} message  提示信息
     * @apiSuccess {Object} data  返回数据
     *
     * @apiSuccessExample {json} Success-Response:
     *     HTTP/1.1 200 OK
     *     {
     *          "code":0,
     *          "message":"",
     *          "data":{
     *                   shopId 店id
     *                   shopName 店名
     *                   address 地址
     *                   status 状态 1正常,2禁用
     *          }
     *      }
     */
    public function work(Request $request){
        $params=$request->param();
        // 检查参数是否存在
        if(!isset($params['token'])){
            return json(returnAjax('','缺少参数token','1'));
        }
        $token = $params['token'];
        if(!isset($params['status'])){
            return json(returnAjax('','缺少参数status','1'));
        }
        $status = $params['status'];
        if(!isset($params['shopId'])){
            return json(returnAjax('','缺少参数shopId','1'));
        }
        $shopId = $params['shopId'];
        if($status != 1 && $status != 2){
            return json(returnAjax('','status值有误',1));
        }
        // 查看员工是否存在
        $isStaff = $this->selStaff($token);
        if(!$isStaff){
            return json(returnAjax('','员工不存在',10));
        }
        $staffId = $isStaff['userId'];
        // 查看店铺是否存在
        $isShop = $this->selShop($shopId);
        if(!$isShop){
            return json(returnAjax('','店铺不存在',1));
        }
        $staffStatus = Model('StaffStatus');
        // 检查员工当前状态
        $staff_this_Status = $staffStatus->selWorking($staffId);
        // 如果是要上班,查看是否已有上班记录
        if($status == 1){
            if($staff_this_Status){
                return json(returnAjax('','您已上线',1));
            }else{
                // 添加上班记录
                $resToWork = $staffStatus->toWork($staffId,$shopId);
                
                if($resToWork){
                    return json(returnAjax($resToWork[0]));
                }else{
                    return json(returnAjax('','上线失败','-1'));
                }
            }
        }else if($status == 2){
            // 如果是要下班,查看是否在上班
            if($staff_this_Status){
                // 修改下班记录
                $resDownWork = $staffStatus->downWork($staffId,$shopId);
                if($resDownWork){
                    return json(returnAjax());
                }else{
                    return json(returnAjax('','下线失败','-1'));
                }
            }else{
                return json(returnAjax('','您还未上线',1));
            }
        }
       
    }



    /**
     * @api {POST} Staff/selStatus 查看员工上下班状态
     * @apiVersion 1.0.0
     * @apiGroup 员工
     *
     * @apiParam {String} token 员工token
     *
     * @apiSuccess {Int} code 返回码
     * @apiSuccess {String} message  提示信息
     * @apiSuccess {Object} data  返回数据
     *
     * @apiSuccessExample {json} Success-Response:
     *     HTTP/1.1 200 OK
     *     {
     *          "code":0,
     *          "message":"",
     *          "data":{
     *              shopId 店铺id
     *              shopName    店铺名称
     *              type        是否能上门
     *          }
     *      }
     */
    public function selStatus(Request $request){
        $params=$request->param();
         // 检查参数是否存在
         if(!isset($params['token'])){
            return json(returnAjax('','缺少参数token','1'));
        }
        $token = $params['token'];
        // 查看员工是否存在
        $isStaff = $this->selStaff($token);
        if(!$isStaff){
            return json(returnAjax('','员工不存在',10));
        }
        $staffStatus = Model('StaffStatus');
        $staffId = $isStaff['userId'];
        $staff_this_Status = $staffStatus->selWorking($staffId);
        return json(returnAjax($staff_this_Status));
    }


    /**
     * @api {POST} Staff/sgaffStartSer 员工开始服务(上门订单和陌客订单)
     * @apiVersion 1.0.0
     * @apiGroup 员工
     *
     * @apiParam {String} shopId 店铺id
     *
     * @apiSuccess {Int} code 返回码
     * @apiSuccess {String} message  提示信息
     * @apiSuccess {Object} data  返回数据
     *
     * @apiSuccessExample {json} Success-Response:
     *     HTTP/1.1 200 OK
     *     {
     *          "code":0,
     *          "message":"",
     *          "data":{
     *          }
     *      }
     */
    public function sgaffStartSer(Request $request){
        $params=$request->param();
        $shopId = $this->checkParam($params['shopId'],'shopId',true);
        // 查看店铺是否存在
        $isShop = $this->selShop($shopId);
        if(!$isShop){
            return json(returnAjax('','店铺不存在',1));
        }
        $order = Model('Order');
        $res = $order->staffServerStart($shopId);
        if($res){
            return json(returnAjax());
        }else{
            return json(returnAjax(null,'系统异常',-1));
        }
    }

/**
     * @api {POST} Staff/sgaffStartEnd 员工完成服务(上门订单和陌客订单)
     * @apiVersion 1.0.0
     * @apiGroup 员工
     *
     * @apiParam {String} shopId 店铺id
     *
     * @apiSuccess {Int} code 返回码
     * @apiSuccess {String} message  提示信息
     * @apiSuccess {Object} data  返回数据
     *
     * @apiSuccessExample {json} Success-Response:
     *     HTTP/1.1 200 OK
     *     {
     *          "code":0,
     *          "message":"",
     *          "data":{
     *          }
     *      }
     */
    public function sgaffStartEnd(Request $request){
        $params=$request->param();
        $shopId = $this->checkParam($params['shopId'],'shopId',true);
        // 查看店铺是否存在
        $isShop = $this->selShop($shopId);
        if(!$isShop){
            return json(returnAjax('','店铺不存在',1));
        }
        $order = Model('Order');
        $res = $order->staffServerEnd($shopId);
        if($res){
            return json(returnAjax());
        }else{
            return json(returnAjax(null,'系统异常',-1));
        }
    }

}
